/*
 * ResultGenerator.h
 *
 *      Author: Jerome RD Soine and Christoph A Brand
 *      Institution: Schwarz goup, Institute for Theoretical Physics, Heidelberg University, Germany
 */

#ifndef RESULTGENERATOR_H_
#define RESULTGENERATOR_H_

#include <iostream>
#include "include/core/worker/WorkerManager.h"
#include "OptimizationObject.h"
#include "include/base/cell_models/ACM/geometry/base/vertex.h"
#include <cmath>
using namespace std;

class ResultGenerator {
private:

	WorkerManager* manager;
	OptimizationObject * opti_object;
	vector<double> tensions;
	static double get_degree_of_alignment(Vertex v1, Vertex v2);
public:
	ResultGenerator(OptimizationObject * OPTI_OBJECT);
	void execute();
	static vector<double> read_solution_file(string filename);
	static void execute(string output_path, string solution_file, string network_file);
	static void execute_correlation_analysis(string output_path, string parameter_file, string network_file);
	static void execute_correlation_analysis(string output_path, string out_file, string parameter_file, string solution_file);
	static vector< vector<Vertex> > getDirectionCorrelationInput(string network_file);
	static void correlate_fa_elongation_with_sf_orientation(string network_file, string ellipse_file, string output_path);
	static void execute_sampling_around_point(string output_path, string parameter_file, string solution_file, unsigned int x_tension_number, unsigned int y_tension_number,unsigned int step_number, double x_width, double y_width);
	static double getL2(string parameter_file, string solution_file);
	static void compareL2(string parameter_file, string solution_file1, string solution_file2);
	static void get_forces(string paramter_file, string solution_file);
};




#endif /* RESULTGENERATOR_H_ */
